package com.je.app.model;

import java.util.Date;

import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;


@SuppressWarnings("serial")
public class Movimiento implements java.io.Serializable {

	private Integer idMovimiento;
	
	@NotNull
	private Sesion sesion;
	
	@NotNull
	private Date fecha;
	
	@Min(0)
	private double monto;
	
	@NotNull
	@Size(min=6,max=7)
	private String tipoMovimiento;
	
	@NotNull
	@Size(min=0,max=45)
	private String detalle;
	
	@Size(min=0,max=1000)
	private String observacion;
	
	
	@AssertTrue //Valida que el tipo de movimiento sea correcto
	private boolean isTipoMovValid(){
	
		return tipoMovimiento.equals("Egreso") || tipoMovimiento.equals("Ingreso") || tipoMovimiento.equals("Retiro") ; 
	}
	
	public Movimiento() {
	}

	
	public Movimiento(Sesion sesion, Date fecha, double monto,
			String tipoMovimiento, String detalle, String observacion) {
		this.sesion = sesion;
		this.fecha = fecha;
		this.monto = monto;
		this.tipoMovimiento = tipoMovimiento;
		this.detalle = detalle;
		this.observacion = observacion;
	}

	public Integer getIdMovimiento() {
		return this.idMovimiento;
	}

	public void setIdMovimiento(Integer idMovimiento) {
		this.idMovimiento = idMovimiento;
	}

	public Sesion getSesion() {
		return this.sesion;
	}

	public void setSesion(Sesion sesion) {
		this.sesion = sesion;
	}

	public Date getFecha() {
		return this.fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public double getMonto() {
		return this.monto;
	}

	public void setMonto(double monto) {
		this.monto = monto;
	}

	public String getTipoMovimiento() {
		return this.tipoMovimiento;
	}

	public void setTipoMovimiento(String tipoMovimiento) {
		this.tipoMovimiento = tipoMovimiento;
	}

	public String getDetalle() {
		return detalle;
	}

	public void setDetalle(String detalle) {
		this.detalle = detalle;
	}

	public String getObservacion() {
		return observacion;
	}

	public void setObservacion(String observacion) {
		this.observacion = observacion;
	}

	public Object [] toArray(){
		return new Object [] {detalle,monto};
	}
}
